home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Extra 1996 #2
/
Amiga Plus CD - 1996 - No. 2 Extra.iso
/
clarissa1_1-demo
/
macros
/
set_playmode.clssa
< prev
next >
Wrap
Text File
|
1995-03-28
|
20KB
|
535 lines
/***********************************************************************
GADGET: "'Abspielarten'" "7" AUTO TYP: "?"
$DAT >>HE_PlayMode.clssa<< 25.10.1993 - (C) ProDAD Holger Burkarth
>>Set_PlayMode.clssa<< 29.03.1995 - (C) ProDAD Michael Christoph
Spezialversion für clariSSA V1.1
************************************************************************/
Options RESULTS
Address clariSSA
FailAt 99
AltFail=RESULT
/* Voreinstellungen: */
Einstellung.1 ="FOREVER OFF"
Einstellung.2 ="MOUSESTART OFF"
Einstellung.3 ="SLOWPLAY OFF"
Einstellung.4 ="DFPMode ON "
Einstellung.5 ="FFStop ON "
Einstellung.6 ="BlackScreen OFF"
Einstellung.7 ="Background ON "
Einstellung.8 ="HarmLoop ON "
Einstellung.9 ="ViewFreezer ON "
Einstellung.10="IFL OFF"
Einstellung=10
GetPlayMode
IF RC=0 THEN DO
Parse var RESULT "FOREVER" Einstellung.1 .
Parse var RESULT "MOUSESTART" Einstellung.2 .
Parse var RESULT "SLOWPLAY" Einstellung.3 .
Parse var RESULT "DFPMode" Einstellung.4 .
Parse var RESULT "FFStop" Einstellung.5 .
Parse var RESULT "BlackScreen" Einstellung.6 .
Parse var RESULT "Background" Einstellung.7 .
Parse var RESULT "HarmLoop" Einstellung.8 .
Parse var RESULT "ViewFreezer" Einstellung.9 .
Parse var RESULT "IFL" Einstellung.10 .
Einstellung.1 ="FOREVER "Einstellung.1
Einstellung.2 ="MOUSESTART "Einstellung.2
Einstellung.3 ="SLOWPLAY "Einstellung.3
Einstellung.4 ="DFPMode "Einstellung.4
Einstellung.5 ="FFStop "Einstellung.5
Einstellung.6 ="BlackScreen "Einstellung.6
Einstellung.7 ="Background "Einstellung.7
Einstellung.8 ="HarmLoop "Einstellung.8
Einstellung.9 ="ViewFreezer "Einstellung.9
Einstellung.10="IFL "Einstellung.10
END
DO FOREVER
MSRequester "TITLE '*** Abspielarten verändern ***'",
"''",
"'Hier können Sie Einstellungen vornehmen,'",
"'die sich auf den Animationsablauf beziehen.'",
"''",
"'Mit <zurück> können Sie alle Einstell-Fenster'",
"'verlassen, ohne die Einstellungen zu verändern.'",
"PTEXT 'Abspielgeschwindigkeit...'",
"'Endloswiedergabe...'",
"'Mausstart...'",
"'IFL...'",
"'Black Screen...'",
"'Background...'",
"'FFStop...'",
"'** zurück, mit Speichern der Einstellungen **'",
"'** Abbruch, ohne Speichern der Einstellungen **'"
/* evtl. Balance, ViewFreezer, DFPMode, Harmonie-Loop */
res="BREAK"
IF RC~=0 | RESULT>8 THEN LEAVE
res="-"
IF RESULT=1 THEN res=Abspielgeschwindigkeit()
ELSE IF RESULT=2 THEN res=Endloswiedergabe()
ELSE IF RESULT=3 THEN res=Mausstart()
ELSE IF RESULT=4 THEN res=IFL()
ELSE IF RESULT=5 THEN res=BlackScreen()
ELSE IF RESULT=6 THEN res=Background()
ELSE IF RESULT=7 THEN res=FFStop()
ELSE IF RESULT=8 THEN res="CLOSE"
IF res="CHANGE" THEN Aenderung="JA" /* Schalter in Unterfenster ausgewählt */
IF res="CLOSE" THEN LEAVE /* Abbruch in Unterfenster, oder zurück */
END
/****** Playeinstellungen sichern ******/
IF res~="BREAK" THEN DO
i=1
IF Open(ff,"clvars/playeinstellungen","write") THEN DO
call WriteLn(ff,"; clariSSA-Playeinstellungen") /* Dateikennung */
DO UNTIL i>Einstellung
call WriteLn(ff,'"'Einstellung.i'"')
i=i+1
END
datumzeit=Date()", "Time()
datumzeit=Overlay(".",datumzeit,3,1)
datumzeit=Overlay(".",datumzeit,7,1)
call WriteLn(ff,"; letzte Änderung: "datumzeit)
call Close(ff)
END
ELSE Message "'Einstellungen können nicht in Datei''<clvars/playeinstellungen>''geschrieben werden.'"
/****** geänderte Einstellungen aktivieren ******/
i=1; Einstellungen=""
DO UNTIL i>Einstellung; Einstellungen=Einstellungen Einstellung.i; i=i+1; END
SetPlayMode Einstellungen
END
FailAt AltFail
exit
/***********************************************************************/
Abspielgeschwindigkeit: procedure expose VideoNorm Einstellung.3 Einstellung.4 Einstellung.12
DO
OrginalFrameWert=50
MaximalFrameWert=50
/*GetPlayMode
IF RC=0 THEN Parse var RESULT "FRAMES" OrginalFrameWert .*/
IF MaximalFrameWert=50 THEN DO
ReqText1="'Videonorm: PAL = 50 Hz'"
ReqBotton1="'PAL 50Hz (volle Synchronisation)'",
"'PAL 50Hz (halbe Synchronisation)'",
"'PAL 25Hz (halbe Synchronisation)'"
IntReqText="'Normal: PAL = 50'"
VideoNorm=PAL
END
ELSE IF MaximalFrameWert=60 THEN DO
ReqText1="'Videonorm: NTSC = 60 Hz'"
ReqBotton1="'NTSC 60Hz (volle Synchronisation)'",
"'NTSC 60Hz (halbe Synchronisation)'",
"'NTSC 30Hz (halbe Synchronisation)'"
IntReqText="'Normal: NTSC = 60'"
VideoNorm=NTSC
END
ELSE DO
ReqText1="'Videonorm: unbekannt = "MaximalFrameWert" Hz'"
ReqBotton1="'50Hz (volle Synchronisation)'",
"'50Hz (halbe Synchronisation)'",
"'25Hz (halbe Synchronisation)'"
IntReqText="'Normal: unbekannt = "MaximalFrameWert"'"
VideoNorm=UNBEKANNT
END
DO FOREVER
/*GetPlayMode
IF RC=0 THEN Parse var RESULT "DFPMode" activ4 .; ELSE activ4="ON"
IF RC=0 THEN Parse var RESULT "FRAMES" activ12 .; ELSE activ12="50"*/
Parse var Einstellung.4 "DFPMode" activ4 .
/*Parse var Einstellung.12 "FRAMES" activ12 .*/
Parse var Einstellung.3 "SLOWPLAY" activ3
IF activ3="ON" THEN activ12="25"; ELSE activ12="50"
activtext=activ12" Hz, "
IF activ12~=MaximalFrameWert & activ12~=MaximalFrameWert/2 THEN activtext=activ12" Frames, "
IF activ4="OFF" THEN activtext=activtext"halbe Synchronisation"
ELSE activtext=activtext"volle Synchronisation"
MSRequester "TITLE '*** Abspielarten verändern ***'",
"'Abspielgeschwindigkeit...'",
"''",
"'Hier können Sie die Abspielgeschwindigkeit der Animation'",
"'bestimmen. Normalerweise sollten Sie immer die volle'",
"'Geschwindigkeit ("MaximalFrameWert" Hz) verwenden.'",
"'Sie können aber auch die halbe Geschwindigkeit direkt'",
"'auswählen. Zusätzlich können Sie wählen, ob mit voller'",
"'oder halber Synchronisation gearbeitet wird.'",
"'Falls die Animation beim Abspielen ruckt, können Sie'",
"'mit halber Synchronisation einen besseren Animations-'",
"'ablauf erreichen. Die Animation kann aber dadurch'",
"'unscharf oder verzerrt erscheinen.'",
"''",
ReqText1,
"''",
"'Aktiv: "activtext"'",
"PTEXT "ReqBotton1,
"'-- Probleme --'",
"'** zurück **'"
/*"'Halbe Synchronisation: Sinnvoll bei LACE-erweiterten Anims'",*/
IF RC~=0 THEN RETURN("CLOSE"); ELSE IF RESULT>4 THEN RETURN("ZURUECK")
IF RESULT=1 THEN DO
Einstellung.3="SLOWPLAY OFF"
Einstellung.4="DFPMode ON "
/*SetPlayMode Einstellung.3 Einstellung.4 Einstellung.12*/
LEAVE
END
ELSE IF RESULT=2 THEN DO
Einstellung.3="SLOWPLAY OFF"
Einstellung.4="DFPMode OFF"
/*SetPlayMode Einstellung.3 Einstellung.4 Einstellung.12*/
LEAVE
END
ELSE IF RESULT=3 THEN DO
Einstellung.3="SLOWPLAY ON "
Einstellung.4="DFPMode OFF"
/*SetPlayMode Einstellung.3 Einstellung.4 Einstellung.12*/
LEAVE
END
ELSE IF RESULT=4 THEN DO
MSRequester "TITLE '*** Abspielarten verändern ***'",
"'-- Probleme --'",
"''",
"'* Wird ihre Animation nicht in der erwarteten Geschwindigkeit'",
"'abgespielt, so sollten Sie folgendes überprüfen:'",
"'Grafikformat nach Tabelle (Handbuch).'",
"'Richtige wahl von DFPMode.'",
"''",
"'* Unscharfe Animationswiedergabe kann bei LACE-Animationen im'",
"'ausgeschalteten DFPMode auftreten. Die Ausnahme'",
"'sind LACE-erweitere Anims.'",
"'Hierbei tritt kein Qualitätsverlust auf.'",
"PTEXT 'Ok'"
END
END
RETURN("CHANGE")
END
/***********************************************************************/
Endloswiedergabe: procedure expose Einstellung.1 Einstellung.8
DO
DO FOREVER
/*GetPlayMode
IF RC=0 THEN Parse var RESULT "FOREVER" activ1 .; ELSE activ1="OFF";
IF RC=0 THEN Parse var RESULT "HarmLoop" activ2 .; ELSE activ1="ON"*/
Parse var Einstellung.1 "FOREVER" activ1 .
Parse var Einstellung.8 "HarmLoop" activ2 .
IF activ1="OFF" THEN activtext="Nur einmal abspielen"
ELSE DO
IF activ2="ON" THEN activtext="Rückfreier Endlosübergang"
ELSE activtext="Immer Bereichsanfang verwenden"
END
MSRequester "TITLE '*** Abspielarten verändern ***'",
"'Endloswiedergabe...'",
"''",
"'Hier können Sie einstellen, ob die Animation nur einmal'",
"'abgespielt werden soll, oder endlos wiederholt wird.'",
"'Zusätzlich können Sie festlegen, ob der Endlosübergang'",
"'korrekt vom Programm berechnet werden soll. Dabei können'",
"'aber die ersten beiden Frames beim Abspielen verworfen'",
"'werden. Wählen Sie <immer Bereichsanfang verwenden> werden'",
"'alle Bilder abgespielt; jedoch kann hier ein Springer auf-'",
"'treten, wenn End- und Anfangsbild nicht zueinander passen.'",
"''",
"'Aktiv: "activtext"'",
"PTEXT 'Nur einmal abspielen'",
"'Ruckfreier Endlosübergang'",
"'Immer Bereichanfang verwenden'",
"'-- Abspielvorgang ruckt, bzw. nicht flüssig --'",
"'-- Farbverfremdung am ersten Frame im Endlosloop --'",
"'** zurück **'"
IF RC~=0 THEN RETURN("CLOSE"); ELSE IF RESULT>5 THEN RETURN("ZURUECK")
IF RESULT=1 THEN DO
Einstellung.1="FOREVER OFF"
/*SetPlayMode Einstellung.1*/
LEAVE
END
ELSE IF RESULT=2 THEN DO
Einstellung.1="FOREVER ON "
Einstellung.8="HarmLoop ON "
/*SetPlayMode Einstellung.1 Einstellung.8*/
/*=======================================================*/
call EndlosCheck()
LEAVE
END
ELSE IF RESULT=3 THEN DO
Einstellung.1="FOREVER ON "
Einstellung.8="HarmLoop OFF"
/*SetPlayMode Einstellung.1 Einstellung.8*/
/*=====================================================*/
call EndlosCheck()
LEAVE
END
ELSE IF RESULT=4 THEN DO
MSRequester "TITLE '*** Abspielarten verändern ***'",
"'-- Tips zu endlos --'",
"''",
"'Eine ruckfreie Endlosdarstellung kann nur erzeugt werden,'",
"'wenn das Framekontinuum an den Verbindungestellen der Animation'",
"'erhalten ist. Hierzu ist zu beachten, daß keine Editiermaßnahmen'",
"'in der Nähe von Start und Ende erfolgen dürfen.'",
"'Weiterhin MUSS eine gerade Animbereichslänge eingestellt werden,'",
"'sonst entsteht ein Kontinuumabbruch im Endlosübergang.'",
"'Harmonie-Loop muß immer angeschaltet sein, so daß der Endlos-'",
"'übergang angeglichen werden kann.'",
"'>> Diese Bewandnis wird von ** Anim-Steuerung setzen ** verwaltet. << '",
"PTEXT 'Ok'"
END
ELSE IF RESULT=5 THEN DO
MSRequester "TITLE '*** Abspielarten verändern ***'",
"'-- Farbverfremdung --'",
"''",
"'Wird für jedes Frame eine neue Farbpalette verwendet, so kann'",
"'es zu einer Farbverfremdung kommen. Diese tritt aber nur dann auf,'",
"'wenn das erste Frame (Bereichsanfang) nicht auf das Video-Frame paßt.'",
"'Um dies zu korrigieren, muß der Bereichsanfang um ein Frame'",
"'verschoben werden'",
"PTEXT 'Ok'"
END
END
RETURN("CHANGE")
END
/***********************************************************************/
Mausstart: procedure expose Einstellung.2
DO
/*GetPlayMode
IF RC=0 THEN Parse var RESULT "MOUSESTART" activ .; ELSE activ="OFF"*/
Parse var Einstellung.2 "MOUSESTART" activ .
IF activ="ON" THEN activtext="mit Mausbetätigung"
ELSE activtext="ohne Mausbetätigung"
MSRequester "TITLE '*** Abspielarten verändern ***'",
"'Mausstart...'",
"''",
"'Wenn Sie wollen, daß die Animation erst dann abge-'",
"'spielt werden soll, wenn Sie die linke Maustaste'",
"'drücken, müssen Sie den ersten Punkt wählen.'",
"''",
"'Aktiv: "activtext"'",
"PTEXT 'Animation abspielen mit Mausbetätigung'",
"'Animation abspielen ohne Mausbetätigung'",
"'** zurück **'"
IF RC~=0 THEN RETURN("CLOSE"); ELSE IF RESULT>2 THEN RETURN("ZURUECK")
IF RESULT=1 THEN Einstellung.2="MOUSESTART ON "
ELSE Einstellung.2="MOUSESTART OFF"
/*SetPlayMode Einstellung.2*/
RETURN("CHANGE")
END
/***********************************************************************/
IFL: procedure expose Einstellung.10
DO
/*GetPlayMode
IF RC=0 THEN Parse var RESULT "IFL" activ .; ELSE activ="OFF"*/
Parse var Einstellung.10 "IFL" activ .
IF activ="ON" THEN activtext="IFL eingeschaltet"
ELSE activtext="IFL ausgeschaltet"
MSRequester "TITLE '*** Abspielarten verändern ***'",
"'IFL...'",
"''",
"'IFL bedeutet invers frame list. Hierbei werden alle SHF (short frame)-'",
"'Aktionen auf das LOF (long frame) gelegt und umgekehrt. Bei'",
"'HAM-Anims ist dieser Effekt besonders gut zu beobachten. Dagegen kann'",
"'bei normalen Auslösungen meist kein Unterschied entdeckt werden.'",
"''",
"'Aktiv: "activtext"'",
"PTEXT 'IFL einschalten'",
"'IFL ausschalten'",
"'** zurück **'"
IF RC~=0 ThEN RETURN("CLOSE"); ELSE IF RESULT>2 THEN RETURN("ZURUECK")
IF RESULT=1 THEN Einstellung.10="IFL ON "
ELSE Einstellung.10="IFL OFF"
/*SetPlayMode Einstellung.10*/
RETURN("CHANGE")
END
/***********************************************************************/
BlackScreen: procedure expose Einstellung.6
DO
/*GetPlayMode
IF RC=0 THEN Parse var RESULT "BlackScreen" activ .; ELSE activ="ON"*/
Parse var Einstellung.6 "BlackScreen" activ .
IF activ="ON" THEN activtext="Black Screen eingeschaltet"
ELSE activtext="Black Screen ausgeschaltet"
MSRequester "TITLE '*** Abspielarten verändern ***'",
"'Black Screen...'",
"''",
"'Wenn vor dem abspielen der Animation auf einen Mausklick'",
"'gewartet wird, wird normalerweise das erste Bild angezeigt.'",
"'Wählen Sie hier <Black Screen ein> wird während dieser'",
"'Zeit ein schwarzer Bildschirm angezeigt.'",
"'So kann im Genlockbetrieb besser geschnitten werden.'",
"''",
"'Black Screen kann nicht bei Endloswiedergabe verwendet werden.'",
"''",
"'Aktiv: "activtext"'",
"PTEXT 'Black Screen einschalten'",
"'Black Screen ausschalten'",
"'** zurück **'"
IF RC~=0 THEN RETURN("CLOSE"); ELSE IF RESULT>2 THEN RETURN("ZURUECK")
IF RESULT=1 THEN Einstellung.6="BlackScreen ON "
ELSE Einstellung.6="Blackscreen OFF"
/*SetPlayMode Einstellung.6*/
RETURN("CHANGE")
END
/***********************************************************************/
Background: procedure expose Einstellung.7
DO
/*GetPlayMode
IF RC=0 THEN Parse var RESULT "Background" activ .; ELSE activ="ON"*/
Parse var Einstellung.7 "Background" activ .
IF activ="ON" THEN activtext="Background eingeschaltet"
ELSE activtext="Background ausgeschaltet"
MSRequester "TITLE '*** Abspielarten verändern ***'",
"'Background...'",
"''",
"'Für einige Aktionen benötigt man einen virtuellen Hintergrund,'",
"'damit die systemeigene Verwaltung korrekt arbeiten kann.'",
"'Immer, wenn sich die Animation nicht im Sichtfeld befindet'",
"'oder für kurze Zeit ausgeblendet ist, muß ein Hintergrund'",
"'verwendet werden. Bei einer Zuwiderhandlung meldet clariSSA:'",
"'<falsche Playdaten> !'",
"''",
"'Aktiv: "activtext"'",
"PTEXT 'Background einschalten'",
"'Background ausschalten'",
"'** zurück **'"
IF RC~=0 THEN RETURN("CLOSE"); ELSE IF RESULT>2 THEN RETURN("ZURUECK")
IF RESULT=1 THEN Einstellung.7="Background ON "
ELSE Einstellung.7="Background OFF"
/*SetPlayMode Einstellung.7*/
RETURN("CHANGE")
END
/***********************************************************************/
FFStop: procedure expose Einstellung.5
DO
/*GetPlayMode
IF RC=0 THEN Parse var RESULT "FFStop" activ .; ELSE activ="ON"*/
Parse var Einstellung.5 "FFStop" activ .
IF activ="ON" THEN activtext="FFStop eingeschaltet"
ELSE activtext="FFStop ausgeschaltet"
MSRequester "TITLE '*** Abspielarten verändern ***'",
"'FFStop...'",
"''",
"'Bei eingeschaltetem FFStop-Modus wird bei jeder Warteaktion'",
"'(wie bei Mausstart oder Diskzugriff) ein LACE-Frame dargestellt.'",
"'Jedoch kann dies auch ein Flimmern verursachen.'",
"'Grundsätzlich muß gesagt werden: Liegt eine Warteaktion in'",
"'einer Bewegung, so ist FFStop auszuschalten.'",
"''",
"'Aktiv: "activtext"'",
"PTEXT 'FFStop einschalten'",
"'FFStop ausschalten'",
"'** zurück **'"
IF RC~=0 THEN RETURN("CLOSE"); ELSE IF RESULT>2 THEN RETURN("ZURUECK")
IF RESULT=1 THEN Einstellung.5="FFStop ON "
ELSE Einstellung.5="FFStop OFF"
/*SetPlayMode Einstellung.5*/
RETURN("CHANGE")
END
/***********************************************************************/
EndlosCheck: procedure
DO
SelectAnim MASTER
GetAnimInfo
IF RESULT~="" THEN DO
GetArea
PARSE VAR RESULT "FROM" von "TO" bis .
Anz=von+bis+1
IF (Anz // 2) ~= 0 THEN DO
IF Anz > 4 THEN bis=bis-1
SetArea "FROM" von "TO" bis
END
END
END
/***********************************************************************/